home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc19 / gemfsc19.lzh / DISTRIB / GEMFBIND.H < prev   
C/C++ Source or Header  |  1993-03-27  |  35KB  |  777 lines

  1. /**************************************************************************
  2.  * GEMFBIND.H - Header file for low-level GEM bindings.
  3.  *
  4.  *    This header file contains items compatible with both GEMDEFS and OBDEFS
  5.  *    from Alcyon C, or with AES.H and VDI.H from Lattice C.
  6.  *
  7.  *    Include this header file directly only if you want vanilla DRI-style
  8.  *    bindings with no GemFast extensions or utilties.  Normally, a program
  9.  *    would #include <gemfast.h> and this file would be #included from there.
  10.  *
  11.  *    If the macro NO_VDI is defined, VDI-related macros & protos are skipped.
  12.  *    If the macro NO_AES is defined, AES-related macros & protos are skipped.
  13.  *
  14.  *    If you need the fd_addr field of an FDB/MFDB to be something other than
  15.  *    a void* type, do a "#define FDADDR long" (or whatever type you need).
  16.  *
  17.  * Maintenance:
  18.  *    02/01/93 - v1.9
  19.  *               > This has been split off from GEMFAST.H.  GemFast now works
  20.  *                 by riding on top of whatever bindings system the host
  21.  *                 compiler uses.  For HSC and GNU, gemfast is the bindings
  22.  *                 system, and this header sets up the basic constants and
  23.  *                 data types.  For other compilers, this header isn't used;
  24.  *                 the stuff it contains can be found in the compiler's GEM
  25.  *                 headers.
  26.  *************************************************************************/
  27.  
  28. #ifndef GEMFBIND_H                /* Prevent multiple inclusion */
  29. #define GEMFBIND_H
  30.  
  31. #ifdef __cplusplus
  32.   extern "C" {
  33. #endif
  34.  
  35. /*----------------------------------------------------------------------------
  36.  * under GNU, we only work if -mshort (16-bit-int) is used, until I get
  37.  * around to working over the bindings to support 32-bit-int properly.
  38.  *--------------------------------------------------------------------------*/
  39.  
  40. #if defined(__GNUC__) && !defined(__MSHORT__)
  41.   #error The -mshort command line option must be used with this version of GemFast!
  42. #endif
  43.  
  44. /*----------------------------------------------------------------------------
  45.  * provide compiler independance for prototypes.
  46.  *--------------------------------------------------------------------------*/
  47.  
  48. #ifndef __PROTO
  49.   #if defined(LATTICE) || defined(__GNUC__) || defined(__TURBOC__)
  50.     #define __PROTO(a) a
  51.   #else
  52.     #define __PROTO(a) ()
  53.   #endif
  54. #endif
  55.  
  56. /*----------------------------------------------------------------------------
  57.  * VDI stuff.
  58.  *--------------------------------------------------------------------------*/
  59.  
  60. #ifndef NO_VDI
  61.                                 /* VDI inside fill styles  */
  62. #define IS_HOLLOW    0
  63. #define IS_SOLID    1
  64. #define IS_PATTERN    2
  65. #define IS_HATCH    3
  66. #define IS_UDPTRN    4
  67.                                 /* VDI inside fill patterns  */
  68. #define IP_HOLLOW    0
  69. #define IP_1PTRN    1
  70. #define IP_2PTRN    2
  71. #define IP_3PTRN    3
  72. #define IP_4PTRN    4
  73. #define IP_5PTRN    5
  74. #define IP_6PTRN    6
  75. #define IP_SOLID    7
  76.                                /* VDI normal graphics drawing modes */
  77. #define MD_REPLACE    1
  78. #define MD_TRANS    2
  79. #define MD_XOR        3
  80. #define MD_ERASE    4
  81.                                /* VDI bit blt rules */
  82. #define ALL_WHITE    0
  83. #define S_AND_D     1
  84. #define S_AND_NOTD    2
  85. #define S_ONLY        3
  86. #define NOTS_AND_D    4
  87. #define D_ONLY        5
  88. #define S_XOR_D     6
  89. #define S_OR_D        7
  90. #define NOT_SORD    8
  91. #define NOT_SXORD    9
  92. #define D_INVERT    10
  93. #define NOT_D        10
  94. #define S_OR_NOTD    11
  95. #define NOT_S        12
  96. #define NOTS_OR_D    13
  97. #define NOT_SANDD    14
  98. #define ALL_BLACK    15
  99.                                /* return values from vq_gdos() */
  100. #define GDOS_NONE 0L                /* no GDOS installed */
  101. #define GDOS_FSM  0x5F46534DL        /* '_FSM' */
  102. #define GDOS_FNT  0x5F464E54L        /* '_FNT' */
  103.  
  104. /*-------------------------------------------------------------------------
  105.  * FDB/MFDB structure (describes memory area for VDI blit)...
  106.  *-----------------------------------------------------------------------*/
  107.  
  108. #ifndef FDADDR                    /* v1.3:  this define has been added to  */
  109.   #define FDADDR void*            /* help provide compatibility between     */
  110. #endif                            /* bindings systems.                     */
  111.  
  112. typedef struct fdbstr {
  113.     FDADDR      fd_addr;
  114.     short      fd_w;
  115.     short      fd_h;
  116.     short      fd_wdwidth;
  117.     short      fd_stand;
  118.     short      fd_nplanes;
  119.     short      fd_r1;
  120.     short      fd_r2;
  121.     short      fd_r3;
  122. } FDB, MFDB;
  123.  
  124. /*-------------------------------------------------------------------------
  125.  * MFORM structure (describes mouse cursor data)...
  126.  *-----------------------------------------------------------------------*/
  127.  
  128. typedef struct mfstr {
  129.     short mf_xhot;
  130.     short mf_yhot;
  131.     short mf_nplanes;
  132.     short mf_fg;
  133.     short mf_bg;
  134.     short mf_mask[16];
  135.     short mf_data[16];
  136. } MFORM;
  137.  
  138. /*----------------------------------------------------------------------------
  139.  * VDI prototypes.    (vdicall() is for rolling your own new bindings in C.)
  140.  *--------------------------------------------------------------------------*/
  141.  
  142. extern short   vdicall              __PROTO((short _Contrl[], short _Intin[], short _Ptsin[], short _Intout[], short _Ptsout[]));
  143. extern void    v_alpha_text       __PROTO((short _Hnd, char *_Str));
  144. extern void    v_arc              __PROTO((short _Hnd, short _X, short _Y, short _Radius, short _Begang, short _Endang));
  145. extern void    v_bar              __PROTO((short _Hnd, short _Pxy[]));
  146. extern void    v_bit_image          __PROTO((short _Hnd, char *_Filename, short _Aspect, short _X_scale, short _Y_scale, short _H_align, short _V_align, short *_Pxy));
  147. extern void    v_cellarray          __PROTO((short _Hnd, short _Pxy[], short _Row_length, short _Elements, short _Nrows, short _Write_mode, short _Colarray[]));
  148. extern void    v_circle           __PROTO((short _Hnd, short _X, short _Y, short _Radius));
  149. extern void    v_clear_disp_list  __PROTO((short _Hnd));
  150. extern void    v_clrwk              __PROTO((short _Hnd));
  151. extern void    v_clsvwk           __PROTO((short _Hnd));
  152. extern void    v_clswk              __PROTO((short _Hnd));
  153. extern void    v_contourfill      __PROTO((short _Hnd, short _X, short _Y, short _Index));
  154. extern void    v_curdown          __PROTO((short _Hnd));
  155. extern void    v_curhome          __PROTO((short _Hnd));
  156. extern void    v_curleft          __PROTO((short _Hnd));
  157. extern void    v_curright          __PROTO((short _Hnd));
  158. extern void    v_curtext          __PROTO((short _Hnd, char *_Str));
  159. extern void    v_curup              __PROTO((short _Hnd));
  160. extern void    v_dspcur           __PROTO((short _Hnd, short _X, short _Y));
  161. extern void    v_eeol              __PROTO((short _Hnd));
  162. extern void    v_eeos              __PROTO((short _Hnd));
  163. extern void    v_ellarc           __PROTO((short _Hnd, short _X, short _Y, short _Xrad, short _Yrad, short _Begang, short _Endang));
  164. extern void    v_ellipse          __PROTO((short _Hnd, short _X, short _Y, short _Xrad, short _Yrad));
  165. extern void    v_ellpie           __PROTO((short _Hnd, short _X, short _Y, short _Xrad, short _Yrad, short _Begang, short _Endang));
  166. extern void    v_enter_cur          __PROTO((short _Hnd));
  167. extern void    v_escape2000       __PROTO((short _Hnd, short _Times));
  168. extern void    v_exit_cur          __PROTO((short _Hnd));
  169. extern void    v_fillarea          __PROTO((short _Hnd, short _Count, short _Pxy[]));
  170. extern void    v_form_adv          __PROTO((short _Hnd));
  171. extern void    v_gchar              __PROTO((short _Hnd, short _X, short _Y, char _Char));
  172. extern void    v_get_pixel          __PROTO((short _Hnd, short _X, short _Y, short *_Pel, short *_Indx));
  173. extern short   v_gtext              __PROTO((short _Hnd, short _X, short _Y, char *_Str));
  174. extern void    v_hardcopy          __PROTO((short _Hnd));
  175. extern void    v_hide_c           __PROTO((short _Hnd));
  176. extern void    v_justified          __PROTO((short _Hnd, short _X, short _Y, char *str, short _Len, short _Word_space, short _Char_space));
  177. extern void    v_meta_extents      __PROTO((short _Hnd, short _Min_x, short _Min_y, short _Max_x, short _Max_y));
  178. extern void    v_opnvwk           __PROTO((short _Work_in[], short *_Hnd, short _Work_out[]));
  179. extern void    v_opnwk              __PROTO((short _Work_in[], short *_Hnd, short _Work_out[]));
  180. extern void    v_output_window      __PROTO((short _Hnd, short *_Pxy));
  181. extern void    v_pieslice          __PROTO((short _Hnd, short _X, short _Y, short _Radius, short _Begang, short _Endang));
  182. extern void    v_pline              __PROTO((short _Hnd, short _Count, short _Pxy[]));
  183. extern void    v_pmarker          __PROTO((short _Hnd, short _Count, short _Pxy[]));
  184. extern void    v_rbox              __PROTO((short _Hnd, short _Pxy[]));
  185. extern void    v_rfbox              __PROTO((short _Hnd, short _Pxy[]));
  186. extern void    v_rmcur              __PROTO((short _Hnd));
  187. extern void    v_rvoff              __PROTO((short _Hnd));
  188. extern void    v_rvon              __PROTO((short _Hnd));
  189. extern void    v_show_c           __PROTO((short _Hnd, short _Reset));
  190. extern void    v_sound              __PROTO((short _Hnd, short _Frequency, short _Dration));
  191. extern void    v_updwk              __PROTO((short _Hnd));
  192. extern void    v_write_meta       __PROTO((short _Hnd, short _Num_intin, short *_A_intin, short _Num_ptsin, short *_A_ptsin));
  193. extern void    vex_butv           __PROTO((short _Hnd, void *_New_p, void **_Old));
  194. extern void    vex_curv           __PROTO((short _Hnd, void *_New_p, void **_Old));
  195. extern void    vex_motv           __PROTO((short _Hnd, void *_New_p, void **_Old));
  196. extern void    vex_timv           __PROTO((short _Hnd, void *_Time_addr, void **_Otime_addr, short *_Time_conv));
  197. extern void    vm_coords          __PROTO((short _Hnd, short _Llx, short _Lly, short _Urx, short _Ury));
  198. extern void    vm_filename          __PROTO((short _Hnd, char *_Filename));
  199. extern void    vm_pagesize          __PROTO((short _Hnd, short _Pgwidth, short _Pgheight));
  200. extern void    vq_cellarray       __PROTO((short _Hnd, short _Pxy[], short _Row_len, short _Nrows, short *_El_used, short *_Rows_used, short *_Status, short _Color[]));
  201. extern void    vq_chcells          __PROTO((short _Hnd, short *_N_rows, short *_N_cols));
  202. extern short   vq_color           __PROTO((short _Hnd, short _Index, short _Flag, short _Rgb[]));
  203. extern void    vq_curaddress      __PROTO((short _Hnd, short *_Cur_row, short *_Cur_col));
  204. extern void    vq_dimensions      __PROTO((short _Hnd, short *_Xdimension, short *_Ydimension));
  205. extern void    vq_extnd           __PROTO((short _Hnd, short _Flag, short _Work_out[]));
  206. extern unsigned long vq_gdos      __PROTO((void));
  207. extern void    vq_key_s           __PROTO((short _Hnd, short *_State));
  208. extern void    vq_mouse           __PROTO((short _Hnd, short *_Pstatus, short *_X, short *_Y));
  209. extern void    vq_scan              __PROTO((short _Hnd, short *_G_slice, short *_G_page, short *_A_slice, short *_A_page, short *_Div_fac));
  210. extern short   vq_tabstatus       __PROTO((short _Hnd));
  211. extern void    vqf_attributes      __PROTO((short _Hnd, short _Atrib[]));
  212. extern void    vqin_mode          __PROTO((short _Hnd, short _Dev, short *_Mode));
  213. extern void    vql_attributes      __PROTO((short _Hnd, short _Atrib[]));
  214. extern void    vqm_attributes      __PROTO((short _Hnd, short _Atrib[]));
  215. extern short   vqp_filmname       __PROTO((short _Hnd, short _Index, char *_Name));
  216. extern void    vqt_attributes      __PROTO((short _Hnd, short _Atrib[]));
  217. extern void    vqt_extent          __PROTO((short _Hnd, char *_Str, short _Extent[]));
  218. extern void    vqt_fontinfo       __PROTO((short _Hnd, short *_Minade, short *_Maxade, short _Distances[], short *_Maxwidth, short _Effects[]));
  219. extern short   vqt_name           __PROTO((short _Hnd, short _Element, char *_Name));
  220. extern short   vqt_width          __PROTO((short _Hnd, short _Char, short *_Cw, short *_Ldelta, short *_Rdelta));
  221. extern void    vr_recfl           __PROTO((short _Hnd, short _Pxy[]));
  222. extern void    vr_trnfm           __PROTO((short _Hnd, void *_Src, void *_Dst));
  223. extern void    vro_cpyfm          __PROTO((short _Hnd, short _Mode, short _Pxy[], void *src, void *dst));
  224. extern void    vrq_choice          __PROTO((short _Hnd, short _Cin, short *_Cout));
  225. extern void    vrq_locator          __PROTO((short _Hnd, short _X, short _Y, short *_Xout, short *_Yout, short *_Term));
  226. extern void    vrq_string          __PROTO((short _Hnd, short _Len, short _Echo, short _Echoxy[], char *_Str));
  227. extern void    vrq_valuator       __PROTO((short _Hnd, short _In, short *_Out, short *_Term));
  228. extern void    vrt_cpyfm          __PROTO((short _Hnd, short _Mode, short _Pxy[], void *src, void *dst, short color[]));
  229. extern void    vs_clip              __PROTO((short _Hnd, short _Clip_flag, short _Pxy[]));
  230. extern void    vs_color           __PROTO((short _Hnd, short _Index, short _Rgb[]));
  231. extern void    vs_curaddress      __PROTO((short _Hnd, short _Row, short _Col));
  232. extern short   vs_mute              __PROTO((short _Hnd, short _Action));
  233. extern short   vs_palette          __PROTO((short _Hnd, short _Palette));
  234. extern void    vsc_expose          __PROTO((short _Hnd, short _State));
  235. extern void    vsc_form           __PROTO((short _Hnd, short _Form[]));
  236. extern short   vsf_color          __PROTO((short _Hnd, short _Index));
  237. extern short   vsf_interior       __PROTO((short _Hnd, short _Style));
  238. extern short   vsf_perimeter      __PROTO((short _Hnd, short _Vis));
  239. extern short   vsf_style          __PROTO((short _Hnd, short _Style));
  240. extern void    vsf_udpat          __PROTO((short _Hnd, short _Pat[], short _Planes));
  241. extern short   vsin_mode          __PROTO((short _Hnd, short dev, short _Mode));
  242. extern short   vsl_color          __PROTO((short _Hnd, short _Index));
  243. extern void    vsl_ends           __PROTO((short _Hnd, short _Begstyle, short _Endstyle));
  244. extern short   vsl_type           __PROTO((short _Hnd, short _Style));
  245. extern void    vsl_udsty          __PROTO((short _Hnd, short _Pat));
  246. extern short   vsl_width          __PROTO((short _Hnd, short _Width));
  247. extern short   vsm_choice          __PROTO((short _Hnd, short *_Choice));
  248. extern short   vsm_color          __PROTO((short _Hnd, short _Index));
  249. extern void    vsm_height          __PROTO((short _Hnd, short _Height));
  250. extern short   vsm_locator          __PROTO((short _Hnd, short _X, short _Y, short *_Xout, short *_Yout, short *_Term));
  251. extern short   vsm_string          __PROTO((short _Hnd, short _Len, short _Echo, short _Echoxy[], char *_Str));
  252. extern short   vsm_type           __PROTO((short _Hnd, short _Symbol));
  253. extern void    vsm_valuator       __PROTO((short _Hnd, short _In, short *_Out, short *_Term, short *_Status));
  254. extern void    vsp_film           __PROTO((short _Hnd, short _Index, short _Lightness));
  255. extern void    vst_alignment      __PROTO((short _Hnd, short _Hin, short _Vin, short *_Hout, short *_Vout));
  256. extern short   vst_color          __PROTO((short _Hnd, short _Index));
  257. extern short   vst_effects          __PROTO((short _Hnd, short _Effects));
  258. extern short   vst_font           __PROTO((short _Hnd, short _Font));
  259. extern short   vst_height          __PROTO((short _Hnd, short _Height, short *_Charw, short *_Charh, short *_Cellw, short *_Cellh));
  260. extern short   vst_load_fonts      __PROTO((short _Hnd, short _Select));
  261. extern short   vst_point          __PROTO((short _Hnd, short _Point, short *_Charw, short *_Charh, short *_Cellw, short *_Cellh));
  262. extern short   vst_rotation       __PROTO((short _Hnd, short _Ang));
  263. extern void    vst_unload_fonts   __PROTO((short _Hnd, short _Select));
  264. extern short   vswr_mode          __PROTO((short _Hnd, short _Mode));
  265. extern void    vt_alignment       __PROTO((short _Hnd, short _Dx, short _Dy));
  266. extern void    vt_axis              __PROTO((short _Hnd, short _Xres, short _Yres, short *_Xset, short *_Yset));
  267. extern void    vt_origin          __PROTO((short _Hnd, short _Xorigin, short _Yorigin));
  268. extern void    vt_resolution      __PROTO((short _Hnd, short _Xres, short _Yres, short *_Xset, short *_Yset));
  269.  
  270.  
  271. #endif /* NO_VDI */
  272.  
  273. /*----------------------------------------------------------------------------
  274.  * AES stuff.
  275.  *--------------------------------------------------------------------------*/
  276.  
  277. #ifndef NO_AES
  278.  
  279.                                     /* font types */
  280. #define IBM         3
  281. #define SMALL        5
  282. #define TE_SYSTEM    3
  283. #define TE_SMALL    5
  284.  
  285.                                     /* evnt_multi options */
  286. #define MU_KEYBD    0x0001
  287. #define MU_BUTTON    0x0002
  288. #define MU_M1        0x0004
  289. #define MU_M2        0x0008
  290. #define MU_MESAG    0x0010
  291. #define MU_TIMER    0x0020
  292.                                     /* evnt_mouse options */
  293. #define MU_MENTRY    0x0000
  294. #define MU_MEXIT    0x0001
  295.                                     /* keyboard states */
  296. #define K_RSHIFT    0x0001
  297. #define K_LSHIFT    0x0002
  298. #define K_CTRL        0x0004
  299. #define K_ALT        0x0008
  300.                                     /* event message values */
  301. #define MN_SELECTED 10
  302. #define WM_REDRAW    20
  303. #define WM_TOPPED    21
  304. #define WM_CLOSED    22
  305. #define WM_FULLED    23
  306. #define WM_ARROWED    24
  307. #define WM_HSLID    25
  308. #define WM_VSLID    26
  309. #define WM_SIZED    27
  310. #define WM_MOVED    28
  311. #define WM_NEWTOP    29
  312. #define AC_OPEN     40
  313. #define AC_CLOSE    41
  314. #define CT_UPDATE    50                /* these are XControl messages... */
  315. #define CT_MOVE     51
  316. #define CT_NEWTOP    52
  317. #define CT_KEY        53
  318.                                     /* form_dial opcodes */
  319. #define FMD_START    0
  320. #define FMD_GROW    1
  321. #define FMD_SHRINK    2
  322. #define FMD_FINISH    3
  323.                                     /* rsrc_gaddr structure types */
  324. #define ROOT        0
  325. #define R_TREE        0
  326. #define R_OBJECT    1
  327. #define R_TEDINFO    2
  328. #define R_ICONBLK    3
  329. #define R_BITBLK    4
  330. #define R_STRING    5
  331. #define R_IMAGEDATA 6
  332. #define R_OBSPEC    7
  333. #define R_TEPTEXT    8
  334. #define R_TEPTMPLT    9
  335. #define R_TEPVALID    10
  336. #define R_IBPMASK    11
  337. #define R_IBPDATA    12
  338. #define R_IBPTEXT    13
  339. #define R_BIPDATA    14
  340. #define R_FRSTR     15
  341. #define R_FRIMG     16
  342.                                     /* Window Attributes */
  343. #define NAME        0x0001
  344. #define CLOSER        0x0002
  345. #define FULLER        0x0004
  346. #define MOVER        0x0008
  347. #define INFO        0x0010
  348. #define SIZER        0x0020
  349. #define UPARROW     0x0040
  350. #define DNARROW     0x0080
  351. #define VSLIDE        0x0100
  352. #define LFARROW     0x0200
  353. #define RTARROW     0x0400
  354. #define HSLIDE        0x0800
  355.                                     /* wind_calc options */
  356. #define WC_BORDER    0
  357. #define WC_WORK     1
  358.                                     /* wind_get options */
  359. #define WF_KIND     1
  360. #define WF_NAME     2
  361. #define WF_INFO     3
  362. #define WF_WORKXYWH 4
  363. #define WF_CURRXYWH 5
  364. #define WF_PREVXYWH 6
  365. #define WF_FULLXYWH 7
  366. #define WF_HSLIDE    8
  367. #define WF_VSLIDE    9
  368. #define WF_TOP        10
  369. #define WF_FIRSTXYWH 11
  370. #define WF_NEXTXYWH 12
  371. #define WF_RESVD    13
  372. #define WF_NEWDESK    14
  373. #define WF_HSLSIZE    15
  374. #define WF_VSLSIZE    16
  375. #define WF_SCREEN    17
  376. #define WF_COLOR    18
  377. #define WF_DCOLOR    19
  378.                                     /* window elements    */
  379. #define W_BOX        0
  380. #define W_TITLE     1
  381. #define W_CLOSER    2
  382. #define W_NAME        3
  383. #define W_FULLER    4
  384. #define W_INFO        5
  385. #define W_DATA        6
  386. #define W_WORK        7
  387. #define W_SIZER     8
  388. #define W_VBAR        9
  389. #define W_UPARROW    10
  390. #define W_DNARROW    11
  391. #define W_VSLIDE    12
  392. #define W_VELEV     13
  393. #define W_HBAR        14
  394. #define W_LFARROW    15
  395. #define W_RTARROW    16
  396. #define W_HSLIDE    17
  397. #define W_HELEV     18
  398.                                     /* arrow messages */
  399. #define WA_UPPAGE    0
  400. #define WA_DNPAGE    1
  401. #define WA_UPLINE    2
  402. #define WA_DNLINE    3
  403. #define WA_LFPAGE    4
  404. #define WA_RTPAGE    5
  405. #define WA_LFLINE    6
  406. #define WA_RTLINE    7
  407.                                     /* wind_update options */
  408. #define END_UPDATE    0
  409. #define BEG_UPDATE    1
  410. #define END_MCTRL    2
  411. #define BEG_MCTRL    3
  412.                                     /* graf_mouse mouse types*/
  413. #define ARROW            0
  414. #define TEXT_CRSR        1
  415. #define HOURGLASS        2            /* this name used by MWC */
  416. #define BUSYBEE         2            /* because I always forget the underbar */
  417. #define BUSY_BEE        2
  418. #define BEE             2
  419. #define POINT_HAND        3
  420. #define FLAT_HAND        4
  421. #define THIN_CROSS        5
  422. #define THICK_CROSS     6
  423. #define OUTLN_CROSS     7
  424. #define USER_DEF        255
  425. #define M_OFF            256
  426. #define M_ON            257
  427.                                 /* max depth of search or draw    */
  428. #define MAX_DEPTH    8
  429.                                 /* object types */
  430. #define G_BOX        20
  431. #define G_TEXT        21
  432. #define G_BOXTEXT    22
  433. #define G_IMAGE     23
  434. #define G_USERDEF    24
  435. #define G_PROGDEF    24
  436. #define G_IBOX        25
  437. #define G_BUTTON    26
  438. #define G_BOXCHAR    27
  439. #define G_STRING    28
  440. #define G_FTEXT     29
  441. #define G_FBOXTEXT    30
  442. #define G_ICON        31
  443. #define G_TITLE     32
  444.                                 /* object flags */
  445. #define NONE        0x0000
  446. #define SELECTABLE    0x0001
  447. #define DEFAULT     0x0002
  448. #define EXIT        0x0004
  449. #define EDITABLE    0x0008
  450. #define RBUTTON     0x0010
  451. #define LASTOB        0x0020
  452. #define TOUCHEXIT    0x0040
  453. #define HIDETREE    0x0080
  454. #define INDIRECT    0x0100
  455. #define SUBMENU     0x0800            /* TOS 4.0x hierarchical menus */
  456.                                 /* Object states */
  457. #define NORMAL        0x0000
  458. #define SELECTED    0x0001
  459. #define CROSSED     0x0002
  460. #define CHECKED     0x0004
  461. #define DISABLED    0x0008
  462. #define OUTLINED    0x0010
  463. #define SHADOWED    0x0020
  464.                                 /* Object colors    */
  465. #define WHITE        0
  466. #define BLACK        1
  467. #define RED         2
  468. #define GREEN        3
  469. #define BLUE        4
  470. #define CYAN        5
  471. #define YELLOW        6
  472. #define MAGENTA     7
  473. #define LWHITE        8
  474. #define LBLACK        9
  475. #define LRED        10
  476. #define LGREEN        11
  477. #define LBLUE        12
  478. #define LCYAN        13
  479. #define LYELLOW     14
  480. #define LMAGENTA    15
  481.                                 /* editable text field definitions */
  482. #define EDSTART     0
  483. #define EDINIT        1
  484. #define EDCHAR        2
  485. #define EDEND        3
  486.                                 /* editable text justification */
  487. #define TE_LEFT     0
  488. #define TE_RIGHT    1
  489. #define TE_CNTR     2
  490.  
  491. /**************************************************************************
  492.  * data structures and types...
  493.  *************************************************************************/
  494.  
  495. /*-------------------------------------------------------------------------
  496.  * OBJECT structure...
  497.  *-----------------------------------------------------------------------*/
  498.  
  499. typedef struct object {
  500.     short              ob_next;          /* -> object's next sibling     */
  501.     short              ob_head;          /* -> head of object's children */
  502.     short              ob_tail;          /* -> tail of object's children */
  503.     unsigned short      ob_type;          /* type of object               */
  504.     unsigned short      ob_flags;       /* options                      */
  505.     unsigned short      ob_state;       /* state                          */
  506.     long              ob_spec;          /* whatever...                  */
  507.     short              ob_x;           /* upper left corner of object  */
  508.     short              ob_y;           /* upper left corner of object  */
  509.     short              ob_width;       /* width of obj                  */
  510.     short              ob_height;      /* height of obj                  */
  511. } OBJECT;
  512.  
  513. /*-------------------------------------------------------------------------
  514.  * GRECT structure (an AES-style rectangle, describes via width/height)...
  515.  *-----------------------------------------------------------------------*/
  516.  
  517. typedef struct grect {
  518.     short g_x;
  519.     short g_y;
  520.     short g_w;
  521.     short g_h;
  522. } GRECT;
  523.  
  524. /*-------------------------------------------------------------------------
  525.  * TEDINFO structure...
  526.  *-----------------------------------------------------------------------*/
  527.  
  528. typedef struct text_edinfo {
  529.     char   *te_ptext;              /* ptr to text               */
  530.     char   *te_ptmplt;              /* ptr to template           */
  531.     char   *te_pvalid;              /* ptr to validation chrs.   */
  532.     short  te_font;               /* font                       */
  533.     short  te_junk1;              /* junk word                   */
  534.     short  te_just;               /* justification               */
  535.     short  te_color;              /* color information word    */
  536.     short  te_junk2;              /* junk word                   */
  537.     short  te_thickness;          /* border thickness           */
  538.     short  te_txtlen;              /* length of text string       */
  539.     short  te_tmplen;              /* length of template string */
  540. } TEDINFO;
  541.  
  542. /*-------------------------------------------------------------------------
  543.  * ICONBLK structure...
  544.  *-----------------------------------------------------------------------*/
  545.  
  546. typedef struct icon_block {
  547.     short  *ib_pmask;
  548.     short  *ib_pdata;
  549.     char   *ib_ptext;
  550.     short  ib_char;
  551.     short  ib_xchar;
  552.     short  ib_ychar;
  553.     short  ib_xicon;
  554.     short  ib_yicon;
  555.     short  ib_wicon;
  556.     short  ib_hicon;
  557.     short  ib_xtext;
  558.     short  ib_ytext;
  559.     short  ib_wtext;
  560.     short  ib_htext;
  561. } ICONBLK;
  562.  
  563. /*-------------------------------------------------------------------------
  564.  * BITBLK structure...
  565.  *-----------------------------------------------------------------------*/
  566.  
  567. typedef struct bit_block {
  568.     short  *bi_pdata;                  /* ptr to bit forms data    */
  569.     short  bi_wb;                      /* width of form in bytes */
  570.     short  bi_hl;                      /* height in lines        */
  571.     short  bi_x;                      /* source x in bit form    */
  572.     short  bi_y;                      /* source y in bit form    */
  573.     short  bi_color;                  /* fg color of blt        */
  574. } BITBLK;
  575.  
  576. /*-------------------------------------------------------------------------
  577.  * PARMBLK structure (passed to a userdraw func when drawing an object)...
  578.  *-----------------------------------------------------------------------*/
  579.  
  580. typedef struct parm_blk {
  581.     OBJECT      *pb_tree;
  582.     short      pb_obj;
  583.     short      pb_prevstate;
  584.     short      pb_currstate;
  585.     short      pb_x,  pb_y,    pb_w,  pb_h;
  586.     short      pb_xc, pb_yc, pb_wc, pb_hc;
  587.     long      pb_parm;
  588. } PARMBLK;
  589.  
  590. /*-------------------------------------------------------------------------
  591.  * USERBLK/APPLBLK structure (defines a userdraw object)...
  592.  *-----------------------------------------------------------------------*/
  593.  
  594. typedef struct user_blk {
  595.     long (*ub_code) __PROTO((PARMBLK *));
  596.     long ub_parm;
  597. } USERBLK, APPLBLK;
  598.  
  599. #define appl_blk user_blk
  600.  
  601. /*----------------------------------------------------------------------------
  602.  * TOS 4.0x hiearchical menu structures.
  603.  *    (I gotta learn what this stuff is all about!)
  604.  *--------------------------------------------------------------------------*/
  605.  
  606. typedef struct _menu
  607. {
  608.     OBJECT *mn_tree;    /* the object tree of the menu */
  609.     short    mn_menu;    /* the parent object of the menu items */
  610.     short    mn_item;    /* the starting menu item */
  611.     short    mn_scroll;    /* the scroll field status of the menu
  612.                            0  - The menu will not scroll
  613.                            !0 - The menu will scroll if the number of menu
  614.                                 items exceed the menu scroll height. The
  615.                                 non-zero value is the object at which
  616.                                 scrolling will begin.  This will allow one
  617.                                 to have a menu in which the scrollable region
  618.                                 is only a part of the whole menu.  The value
  619.                                 must be a menu item in the menu.
  620.                                 menu_settings can be used to change the menu
  621.                                 scroll height.
  622.                          NOTE:    If the scroll field status is !0, the menu
  623.                                 items must consist entirely of G_STRINGS. */
  624.     short    mn_keystate; /* The CTRL, ALT, SHIFT Key state at the time the
  625.                                 mouse button was pressed. */
  626. } MENU;
  627.  
  628. /* menu_settings uses a new structure for setting and inquiring the submenu
  629.  * delay values and the menu scroll height.  The delay values are measured in
  630.  * milliseconds and the height is based upon the number of menu items.
  631.  */
  632.  
  633. typedef struct _mn_set
  634. {
  635.     long  Display;      /*  the submenu display delay     */
  636.     long  Drag;       /*  the submenu drag delay        */
  637.     long  Delay;      /*  the single-click scroll delay */
  638.     long  Speed;      /*  the continuous scroll delay    */
  639.     short Height;      /*  the menu scroll height        */
  640. } MN_SET;
  641.  
  642. /*-------------------------------------------------------------------------
  643.  * RSHDR structure...
  644.  *-----------------------------------------------------------------------*/
  645.  
  646. typedef struct rshdr {
  647.     short              rsh_vrsn;       /* Resource structure version # */
  648.     unsigned short      rsh_object;      /* Offset to first object       */
  649.     unsigned short      rsh_tedinfo;      /* Offset to first tedinfo      */
  650.     unsigned short      rsh_iconblk;      /* Offset to first iconblk      */
  651.     unsigned short      rsh_bitblk;      /* Offset to first bitblk       */
  652.     unsigned short      rsh_frstr;      /* Offset to free string index  */
  653.     unsigned short      rsh_string;      /* Offset to string data          */
  654.     unsigned short      rsh_imdata;      /* Offset to image data          */
  655.     unsigned short      rsh_frimg;      /* Offset to free image index   */
  656.     unsigned short      rsh_trindex;      /* Offset to tree index          */
  657.     unsigned short      rsh_nobs;       /* Number of objects              */
  658.     unsigned short      rsh_ntree;      /* Number object trees          */
  659.     unsigned short      rsh_nted;       /* Number of tedinfo structs      */
  660.     unsigned short      rsh_nib;          /* Number of iconblk structs      */
  661.     unsigned short      rsh_nbb;          /* Number of bitblk structs      */
  662.     unsigned short      rsh_nstring;      /* Number of free strings       */
  663.     unsigned short      rsh_nimages;      /* Number of free images          */
  664.     unsigned short      rsh_rssize;      /* total bytes in resource      */
  665. } RSHDR;
  666.  
  667. /**************************************************************************
  668.  * declarations of all global vars defined by gemfast bindings...
  669.  *************************************************************************/
  670.  
  671. /*
  672.  * these are valid after appl_init()
  673.  */
  674.  
  675. extern void     *aespb[6];         /* the AES parmblk, an array of 6 ptrs    */
  676. extern short    aescontrol[5];     /* the AES control structure, 5 shorts    */
  677. extern short    global[];         /* global[] is aliased by following names */
  678. extern short    gl_apversion;     /* the AES version number                   */
  679. extern short    gl_apcount;      /* max # of concurrent AES applications   */
  680. extern short    gl_apid;         /* id of the current application           */
  681. extern long     gl_apprivate;     /* anything the applicaton wants to store */
  682. extern OBJECT    **gl_apptree;     /* pointer to array of object tree ptrs   */
  683. extern long     gl_ap1resv;      /* old name for pointer to rsc data       */
  684. extern RSHDR    *gl_aprshdr;     /* pointer to head of rsc data            */
  685. extern short    gl_ap2resv[6];     /* unused entries in global array           */
  686.  
  687. /*----------------------------------------------------------------------------
  688.  * AES prototypes.
  689.  *--------------------------------------------------------------------------*/
  690.  
  691. extern short  appl_init      __PROTO((void));
  692. extern short  appl_read      __PROTO((short ApId, short Length, void *ApPbuff));
  693. extern short  appl_write     __PROTO((short ApId, short Length, void *ApPbuff));
  694. extern short  appl_find      __PROTO((char *Name));
  695. extern short  appl_tplay     __PROTO((void *Mem, short Num, short Scale));
  696. extern short  appl_trecord     __PROTO((void *Mem, short Count));
  697. extern short  appl_exit      __PROTO((void));
  698. extern short  evnt_keybd     __PROTO((void));
  699. extern short  evnt_button     __PROTO((short Clicks, short WhichButton,short WhichState, short *Mx, short *My,short *ButtonState, short *KeyState));
  700. extern short  evnt_mouse     __PROTO((short EnterExit, short InX, short InY, short InW,short InH, short *OutX, short *OutY,short *ButtonState, short *KeyState));
  701. extern short  evnt_mesag     __PROTO((short MesagBuf[]));
  702. extern short  evnt_timer     __PROTO((unsigned short locount, unsigned short hicount));
  703. extern short  evnt_multi     __PROTO((short Type, short Clicks, short WhichButton,short WhichState, short EnterExit1, short In1X,short In1Y, short In1W, short In1H,
  704.                                 short EnterExit2, short In2X, short In2Y,short In2W, short In2H, short MesagBuf[],unsigned short I1, unsigned short I2,short *OutX, short *OutY,short *ButtonState, short *KeyState, short *Key,short *ReturnCount));
  705. extern short  evnt_dclick     __PROTO((short ToSet, short SetGet));
  706. extern short  form_do         __PROTO((OBJECT *Tree, short StartObj));
  707. extern short  form_dial      __PROTO((short Flag, short Sx, short Sy, short Sw, short Sh,short Bx, short By, short Bw, short Bh));
  708. extern short  form_alert     __PROTO((short DefButton, char *Str));
  709. extern short  form_error     __PROTO((short ErrorCode));
  710. extern short  form_center     __PROTO((OBJECT *Tree, short *Cx, short *Cy, short *Cw,short *Ch));
  711. extern short  form_keybd     __PROTO((OBJECT *Ktree, short Kobject, short Kobnext, short Kchar, short *Knxtobject, short *Knxtchar));
  712. extern short  form_button     __PROTO((OBJECT *Btree, short Bobject, short Bclicks,short *Bnxtobj));
  713. extern short  fsel_input     __PROTO((char *Path, char *File, short *ExitButton));
  714. extern short  fsel_exinput     __PROTO((char *Path, char *File, short *ExitButton,char *Prompt));
  715. extern short  graf_rubberbox __PROTO((short Ix, short Iy, short Iw, short Ih, short *Fw, short *Fh));
  716. extern short  graf_dragbox     __PROTO((short Sw, short Sh, short Sx, short Sy, short Bx, short By, short Bw, short Bh, short *Fw, short *Fh));
  717. extern short  graf_movebox     __PROTO((short Sw, short Sh, short Sx, short Sy, short Dx, short Dy));
  718. extern short  graf_growbox     __PROTO((short Sx, short Sy, short Sw, short Sh, short Fx, short Fy, short Fw, short Fh));
  719. extern short  graf_shrinkbox __PROTO((short Fx, short Fy, short Fw, short Fh, short Sx, short Sy, short Sw, short Sh));
  720. extern short  graf_watchbox  __PROTO((OBJECT *Tree, short Object, short InState, short OutState));
  721. extern short  graf_slidebox  __PROTO((OBJECT *Tree, short Parent, short Object, short Direction));
  722. extern short  graf_handle     __PROTO((short *Wchar, short *Hchar, short *Wbox, short *Hbox));
  723. extern short  graf_mouse     __PROTO((short Form, void *FormAddress));
  724. extern short  graf_mkstate     __PROTO((short *Mx, short *My, short *ButtonState, short *KeyState));
  725. extern short  menu_bar         __PROTO((OBJECT *Tree, short ShowFlag));
  726. extern short  menu_icheck     __PROTO((OBJECT *Tree, short Item, short CheckFlag));
  727. extern short  menu_ienable     __PROTO((OBJECT *Tree, short Item, short EnableFlag));
  728. extern short  menu_tnormal     __PROTO((OBJECT *Tree, short Item, short NormalFlag));
  729. extern short  menu_text      __PROTO((OBJECT *Tree, short Item, char *Text));
  730. extern short  menu_register  __PROTO((short ApId, char *MenuText));
  731. extern short  objc_add         __PROTO((OBJECT *Tree, short Parent, short Child));
  732. extern short  objc_delete     __PROTO((OBJECT *Tree, short Object));
  733. extern short  objc_draw      __PROTO((OBJECT *Tree, short Start, short Depth, short Cx, short Cy, short Cw, short Ch));
  734. extern short  objc_find      __PROTO((OBJECT *Tree, short Start, short Depth, short Mx, short My));
  735. extern short  objc_offset     __PROTO((OBJECT *Tree, short Object, short *X, short *Y));
  736. extern short  objc_order     __PROTO((OBJECT *Tree, short Object, short NewPos));
  737. extern short  objc_edit      __PROTO((OBJECT *Tree, short Object, short Char, short Index, short Kind, short *NewIndex));
  738. extern short  objc_change     __PROTO((OBJECT *Tree, short Object, short Res, short Cx, short Cy, short Cw, short Ch, short NewState, short Redraw));
  739. extern short  rsrc_load      __PROTO((char *Name));
  740. extern short  rsrc_free      __PROTO((void));
  741. extern short  rsrc_gaddr     __PROTO((short Type, short Index, void *Address));
  742. extern short  rsrc_saddr     __PROTO((short Type, short Index, void *Address));
  743. extern short  rsrc_obfix     __PROTO((OBJECT *Tree, short Index));
  744. extern short  scrp_read      __PROTO((char *Scrappath));
  745. extern short  scrp_write     __PROTO((char *Scrappath));
  746. extern short  shel_read      __PROTO((char *Command, char *Tail));
  747. extern short  shel_write     __PROTO((short Exit, short Graphic, short Aes, char *Command, char *Tail));
  748. extern short  shel_find      __PROTO((char *buf));
  749. extern short  shel_envrn     __PROTO((char *result, char *param));
  750. extern short  shel_get         __PROTO((char *Buf, short Len));
  751. extern short  shel_put         __PROTO((char *Buf, short Len));
  752. extern short  wind_create     __PROTO((short Parts, short Wx, short Wy, short Ww, short Wh));
  753. extern short  wind_open      __PROTO((short WindowHandle, short Wx, short Wy, short Ww, short Wh));
  754. extern short  wind_close     __PROTO((short WindowHandle));
  755. extern short  wind_delete     __PROTO((short WindowHandle));
  756. extern short  wind_get         __PROTO((short WindowHandle, short What, short *W1, short *W2, short *W3, short *W4));
  757. extern short  wind_set         __PROTO((short WindowHandle, short What, ...));
  758. extern short  wind_find      __PROTO((short X, short Y));
  759. extern short  wind_update     __PROTO((short Code));
  760. extern short  wind_calc      __PROTO((short Type, short Parts, short InX, short InY, short InW, short InH, short *OutX, short *OutY, short *OutW, short *OutH));
  761. extern void   wind_new         __PROTO((void));
  762. extern void   rc_copy         __PROTO((GRECT *Src, GRECT *Dest));
  763. extern short  rc_equal         __PROTO((GRECT *Rect1, GRECT *Rect2));
  764. extern short  rc_intersect     __PROTO((GRECT *Src, GRECT *Dst));
  765. extern void   rc_union         __PROTO((GRECT *Src, GRECT *Dst));
  766.  
  767. extern short  scrp_clear     __PROTO((void));
  768.  
  769. #endif /* NO_AES */
  770.  
  771. #ifdef __cplusplus
  772.   }
  773. #endif
  774.  
  775. #endif /* GEMFBIND_H */
  776.  
  777.